iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0

Optimizer大亂鬥

今天我們要來介紹一下,Optimizer是做甚麼用的,並簡單介紹一些常用的Optimizer。

Optimizer的作用

簡單來說,Optimizer作用是用來幫助神經網路調整參數用的。
我們知道神經網路由許許多多的神經元所組成,而每一個神經元都具有屬於自己的權重,昨天我們知道了Loss function是要幫助我們判斷誤差值的,而Optimizer是要調整參數,來使Loss越小越好。

Stochastic Gradient Decent(SGD)


SGD就是最單純的梯度下降法,W為權重,L為loss function,η是learning rate。

Momentum

Momentum的意思為動量,我們可以想像一下,動量的公式為P=MV,因此如果在同方向的速度越快,動量越高,而反方向的話,動量則會變低。
因此如果梯度為同方向時,就會慢慢加速,如果為反方向,學習速度則會下降。
可以看到球滾到最右邊時,梯度是往左的,但有一股Momentum的力量往右,因此球就可以度過這個小高峰。


圖片取自
Hung-yi Lee-ML Lecture 9-1: Tips for Training DNN

公式為

Nesterov Accelerated Gradient(NAG)

公式為

可以發現和Momentum長得有點像,NAG就像是另一種的Momentum,它會在前一步累積梯度時學習的很快,接著會再做梯度的修正,這樣可以使我們不會學習得太快。
在RNN使用很好用。

Adagrad(Adaptive Gradient)

這個優化器的學習速度與參數會互相對應。

  • 如果是頻繁常見的參數,那麼它會進行小部分的更新
  • 如果為不常見的參數,那麼它會進行很大的更新。

因此很適合處理稀疏資料集,且減少Learning rate的手動調整。
但缺點就是學習率會不斷的縮小。

Adadelta

這個優化器為Adagrad的改良版,為了解決Adagrad學習率衰減的問題,且不需要設定學習率。
訓練前期加速很快,後期可能會在局部最小值徘徊。

RMSprop

也是一種自適應學習率的優化器,這個優化器也是為了解決Adagrad學習率衰減的問題而產生。效果介於Adadelta與
這個優化器還是依賴Global的學習率,適合處理非平穩目標,對於RNN效果很好。

動畫展示

圖片來源為Alec Radford大神

結論

今天我們看了6種優化器,並了解了它們的特性。

參考資料

tensorflow入门学习,优化器(optimizer)的作用是什么,tensorflow有哪些优化器(九)
Alec Radford's animations for optimization algorithms
[機器學習ML NOTE]SGD, Momentum, AdaGrad, Adam Optimizer
Hung-yi Lee-ML Lecture 9-1: Tips for Training DNN
深度學習——優化器算法Optimizer詳解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
深度學習最全優化方法總結比較(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)


上一篇
Day 13 回歸用Loss function
下一篇
Day 15 Activation function之兄弟大戰
系列文
Machine Learning與軟工是否搞錯了什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言